package cn.jinjimi.domain.data.net;

import cn.jinjimi.domain.data.dto.AvatarDTO;
import cn.jinjimi.domain.data.dto.ProfileDTO;
import cn.jinjimi.domain.data.dto.SiteStatusDTO;
import cn.jinjimi.domain.data.dto.UserProfitDTO;
import cn.jinjimi.domain.data.dto.VerifyResultDTO;
import cn.jinjimi.app.entity.Area;
import cn.jinjimi.app.entity.Group;
import cn.jinjimi.app.entity.HonorBean;
import cn.jinjimi.app.entity.SiteInfo;
import cn.jinjimi.app.entity.StandTheme;
import cn.jinjimi.app.entity.ThemePreview;

import java.util.Map;

import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * Created by zhenhua on 16/7/14.
 */
public interface UserService {


    @FormUrlEncoded
    @POST("/auth/register_extranet")
    Call<ProfileDTO> register(@FieldMap Map<String, String> params);

    @Multipart
    @POST("/users/avatar")
    Call<AvatarDTO> updateAvatarImage(@Part("file") RequestBody file);

    @PUT("/users/profile")
    Call<ResponseBody> updateProfile(@Body RequestBody body);

    @GET("/app/users/profile")
    Call<ProfileDTO> getProfile();

    @GET("/users/province")
    Call<Area> getProvinces();

    @GET("/users/province")
    Call<Area> getCitiesOfProvince(@Query("province_id") String id);

    @POST("/users/username")
    @FormUrlEncoded
    Call<ProfileDTO> setRealName(@Field("agent.real_name") String name);

    @GET("/sites/{ssoid}/status")
    Call<SiteStatusDTO> getAgentSiteStatus(@Path("ssoid") String ssoid);

    @GET("/site/stats")
    Call<SiteInfo> getSiteInfo();

    @GET("/app/users/profit")
    Call<UserProfitDTO> getProfit();

    @PUT("/theme/{id}")
    Call<ResponseBody> setSiteTheme(@Path("id") String id);

    @GET("/theme/{name}/previews")
    Call<ThemePreview> getSiteThemePreviews(@Path("name") String name);

    @GET("/theme/current")
    Call<StandTheme> getCurrentThemeInfo();

    @GET("/theme")
    Call<StandTheme> getThemes();

    @PUT("/app/users/site")
    Call<ResponseBody> activateSite();

    @GET("/users/company")
    Call<Group> getCompanyType();

    @GET("/users/company")
    Call<Group> getCompany(@Query("company_type") String type);

    @DELETE("/users/honors/{id}")
    Call<ResponseBody> deleteHonor(@Path("id") String id);

    @GET("/users/honors")
    Call<HonorBean> getHonors();

    @GET("/auth/image_captcha")
    Call<ResponseBody> getVerifyImage(@Query("source") int source);

    @GET("/auth/captcha/{phone}")
    Call<VerifyResultDTO> sendVerify(@Path("phone") String phone,
                                     @Query("captcha") String captcha,
                                     @Query("source") int source,
                                     @Query("verifyCode") String verifyCode);
}
